Digital cameras are often capable of providing image data in multiple formats. Many digital cameras provide the option to download the unmodified linear sensor data, in what is known as a RAW image file. Virtually all digital cameras provide compressed images in JPEG or some other format, which are created by the camera from these RAW image files. For many users, accessing and processing this RAW image file is preferable to the JPEG output of the camera, as it gives the user enhanced control and choices for optimizing the image that may be different from those selected by the camera manufacturer in designing the processing by which the camera creates the JPEG or other image. A variety of software exists for processing these RAW images, including Aperture® and iPhoto®, which are both available for the Apple's Mac platform. (APERTURE and IPHOTO are registered trademarks of Apple Inc.)
However, the format of this RAW image file varies. For example, the type of colored filter array and digital imaging sensor varies from camera to camera, which affects how the RAW data appears. Additionally, digital cameras employ a variety of other imaging parameters, such as white balance settings or sensitivity, which are required to properly process the image. Most camera manufacturers use a format for these RAW images that is proprietary to that manufacturer. In some cases, manufacturers may even use different formats for different cameras or ranges of cameras. Even though these formats vary, in many cases the image format is based on the TIFF/EP format, with vendor specific meta data stored in an EXIF Makernote.
The nature of RAW image processing is such that some of the information needed to process the RAW images is built into the processing pipeline, and is thus part of an executable, binary file. In many cases, the information is built into the image processing software itself. In other cases, such as Apple's OS X operating system, an operating system service (known as RawCamera) provides support for opening digital camera RAW images. Various clients use this service, including the aforementioned iPhoto and Aperture software as well as third party clients. In the case of Apple's system, when a digital camera raw image is opened, the image is first parsed by a vendor specific image parser. The parser extracts information from the file that is used to identify the camera model. Depending on the vendor, the camera is identified using either a model name, or a unique numerical camera model identifier. With the camera model identified, essential information required to correctly processes the image can now be determined, information like sensor geometry, white and black level, exposure compensation, noise and color characterization as well as image data codec. With this information in place, the actual image data can be unpacked and processed into an output referred image.
The information required to handle processing of a concrete camera model is divided into a property list file and actual code. The property list file contains simple settings that control the processing of the file, such as color matrices and exposure compensation, whereas the code contains information requiring complex logic to determine the right setting. For example, camera manufactures add features such as high dynamic range imaging (“HDR”) that require adjustments to the various brightness and color compensation curves in the camera. Often these changes must be included in the code rather than as separate parameters.
When manufacturers release new digital cameras that provide RAW image support, updates are required to such software to enable it to process the RAW images from the new camera. In some cases this is an update to the application binary, in others, such as Apple's OS X it takes the form of an operating system update. In either case, adding support for a new camera is a multi stage process, that among other, include reverse engineering the proprietary file format, determining basic image properties like, white balance, black level, ISO, crop, metadata as well as noise and color characterization. Because of the cost and complexity of providing updates to application and/or system binaries, software vendors typically provide such updates on relatively long time frames (e.g., every two to three months) and provide updates to add support for multiple cameras (e.g., five to ten). While this reduces the number of updates, it is disadvantageous for users of the new cameras, who find that their new cameras remain unsupported until the next update. Additionally, updating application and/or system binaries is disruptive to the user's workflow. Thus, it would be desirable to provide an improved technique for providing updates to allow application software on a computer to process RAW images from a digital camera.